#ifndef __DLIST_H__
#define __DLIST_H__

// 头文件内容
//航班数据结构体
typedef struct f_data
{
        int id; 					//航班班次
        char flighttype[20] ;		//飞机机型
        char startcity[20] ; 		//航班起点站
        int starttime[2];  			//起飞时间 时:分
        char arrivecity[20] ; 		//航班终点站
        int arrivetime[2] ; 		//到达时间 时:分
        char flytime[20] ;			//飞行时间
        int value ;  				//票价
        int maxNUM ; 				//额定载客量，
        int leftbuyersa ; 			//剩余座位数量
        char whetherfly  ;			//是否起飞 ‘y’ ‘n’
}f_data;

//航班信息节点 - 双向循环链表
typedef struct f_node
{
    struct f_data data;
    struct f_node * prev;
    struct f_node * next;
}f_node;

typedef struct fnode
{
    struct f_node * next;
}f_list;

// 双向链表的创建
f_list* init_double_link_list();

// 双向链表的插入
void insert_double_node(f_list* list, f_data data, int pos);

// 双向链表的删除
f_data delete_double_node(f_list *list, int pos);

// 双向链表的查找
f_node* find_double_node_id(f_list* list, int id);
f_node* find_double_node_flighttype(f_list* list, char* flighttype);

// 双向链表的遍历
void print_forward_double_link_list(f_list* list);
void print_backwards_double_link_list(f_list* list);
// 双向链表的判空
int is_empty_double_link_list(f_list* list);

// 双向链表的清空
void clear_double_link_list(f_list* list);

// 双向链表的合并
f_list* merge_double_link_lists(f_list* list1, f_list* list2);

// 双向链表的销毁
void free_double_link_list(f_list** list);


#endif // __DLIST_H__
